#include "head.h"

int pipe_fd[2];

int main_yunpan(){
    //创建管道
    pipe(pipe_fd);

    //创建并初始化共享资源
    status_t status;
    init_status(&status,4);
    //创建并初始化线程
    create_pthread(&status);
    //创建并初始化socket
    int socket_fd;
    create_socket(&socket_fd);

    int epoll_fd = create_epoll(1);
    add_epoll(epoll_fd,socket_fd);
    while(1){
        struct epoll_event events[2];
        int epoll_num = epoll_wait(epoll_fd,events,2,-1);
        ERROR_CHECK(epoll_num,-1,"epoll_wait");
        for(int i=0;i<epoll_num;++i){
            if(events[i].data.fd == socket_fd){
                int client_fd = accept(socket_fd,NULL,NULL);
                //上锁
                pthread_mutex_lock(&status.lock);
                //将客户端的fd放到共享资源中
                enQueue(&status,client_fd);
                //唤醒线程
                pthread_cond_signal(&status.cond);
                //解锁
                pthread_mutex_unlock(&status.lock);
            }
        }
    }

    return 0;
}
int main(int argc,char* argv[])
{
    //test_config();
    //test_log();
    main_yunpan();
    return 0;
}

